home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 January / PCWorld_2007-01_cd.bin / v cisle / autoit / autoit-v3.2.0.1-setup.exe / Include / GuiCombo.au3 < prev    next >
Text File  |  2006-07-22  |  53KB  |  1,053 lines

  1. ; Include Version:1.66 (17 July 2006)
  2. #include-once
  3. #include <ComboConstants.au3> ; needed for _GUICtrlComboAddDir
  4. #include <Misc.au3>
  5. ; ------------------------------------------------------------------------------
  6. ;
  7. ; AutoIt Version: 3.1.1++
  8. ; Language:       English
  9. ; Description:    Functions that assist with ComboBox.
  10. ;
  11. ; ------------------------------------------------------------------------------
  12.  
  13.  
  14. ; function list
  15. ;===============================================================================
  16. ; _GUICtrlComboAddDir
  17. ; _GUICtrlComboAddString
  18. ; _GUICtrlComboDeleteString
  19. ; _GUICtrlComboFindString
  20. ; _GUICtrlComboGetCount
  21. ; _GUICtrlComboGetCurSel
  22. ; _GUICtrlComboGetDroppedControlRECT
  23. ; _GUICtrlComboGetDroppedState
  24. ; _GUICtrlComboGetDroppedWidth
  25. ; _GUICtrlComboGetEditSel
  26. ; _GUICtrlComboGetExtendedUI
  27. ; _GUICtrlComboGetHorizontalExtent
  28. ; _GUICtrlComboGetItemHeight
  29. ; _GUICtrlComboGetLBText
  30. ; _GUICtrlComboGetLBTextLen
  31. ; _GUICtrlComboGetLocale
  32. ; _GUICtrlComboGetMinVisible
  33. ; _GUICtrlComboGetTopIndex
  34. ; _GUICtrlComboInitStorage
  35. ; _GUICtrlComboInsertString
  36. ; _GUICtrlComboLimitText
  37. ; _GUICtrlComboResetContent
  38. ; _GUICtrlComboSelectString
  39. ; _GUICtrlComboSetCurSel
  40. ; _GUICtrlComboSetDroppedWidth
  41. ; _GUICtrlComboSetEditSel
  42. ; _GUICtrlComboSetExtendedUI
  43. ; _GUICtrlComboSetHorizontalExtent
  44. ; _GUICtrlComboSetItemHeight
  45. ; _GUICtrlComboSetMinVisible
  46. ; _GUICtrlComboSetTopIndex
  47. ; _GUICtrlComboShowDropDown
  48. ;
  49. ; ************** TODO ******************
  50. ; _GUICtrlComboGetComboBoxInfo
  51. ;===============================================================================
  52.  
  53. ;===============================================================================
  54. ;
  55. ; Description:            _GUICtrlComboAddDir
  56. ; Parameter(s):        $h_combobox - control id
  57. ;                            $s_Attributes - Comma-delimited string
  58. ;                            $s_file - Optional for "Drives" only: what to get i.e *.*
  59. ; Requirement:            None
  60. ; Return Value(s):    zero-based index of the last name added to the list
  61. ;                            If an error occurs, the return value is $CB_ERR.
  62. ;                            If there is insufficient space to store the new strings, the return value is $CB_ERRSPACE
  63. ; User CallTip:        _GUICtrlComboAddDir($h_combobox, $s_Attributes[, $s_file=""]) Add names to the list displayed by the combo box (required: <GuiCombo.au3>)
  64. ; Author(s):            Gary Frost (custompcs at charter dot net)
  65. ; Note(s):                $s_Attributes is an comma-delimited string
  66. ;                             valid values are any of the following:
  67. ;                                 A,D,H,RO,RW,S,E,Drives,NB
  68. ;                            A = ARCHIVE
  69. ;                                Includes archived files.
  70. ;                            D = DIRECTORY
  71. ;                                Includes subdirectories. Subdirectory names are enclosed in square brackets ([ ]).
  72. ;                            H = HIDDEN
  73. ;                                Includes hidden files.
  74. ;                            RO = READONLY
  75. ;                                Includes read-only files.
  76. ;                            RW = READWRITE
  77. ;                                Includes read-write files with no additional attributes. This is the default setting.
  78. ;                            S = SYSTEM
  79. ;                                Includes system files.
  80. ;                            E = EXCLUSIVE
  81. ;                                Includes only files with the specified attributes. By default, read-write files are listed even if READWRITE is not specified.
  82. ;                            DRIVES
  83. ;                                All mapped drives are added to the list. Drives are listed in the form [-x-], where x is the drive letter.
  84. ;                            NB = No Brackets
  85. ;                               Drives are liste in the form x:, where x is the drive letter (used with Drives attribute)
  86. ;
  87. ;===============================================================================
  88. Func _GUICtrlComboAddDir($h_combobox, $s_Attributes, $s_file = "")
  89.     Local $i, $v_Attributes = "", $i_drives = 0, $no_brackets = 0
  90.     Local $v_ret, $a_Attributes = StringSplit($s_Attributes, ",")
  91.     For $i = 1 To $a_Attributes[0]
  92.         Select
  93.             Case StringUpper($a_Attributes[$i]) = "A"
  94.                 If (StringLen($v_Attributes) > 0) Then
  95.                     $v_Attributes = $v_Attributes + $CB_DDL_ARCHIVE
  96.                 Else
  97.                     $v_Attributes = $CB_DDL_ARCHIVE
  98.                 EndIf
  99.             Case StringUpper($a_Attributes[$i]) = "D"
  100.                 If (StringLen($v_Attributes) > 0) Then
  101.                     $v_Attributes = $v_Attributes + $CB_DDL_DIRECTORY
  102.                 Else
  103.                     $v_Attributes = $CB_DDL_DIRECTORY
  104.                 EndIf
  105.             Case StringUpper($a_Attributes[$i]) = "H"
  106.                 If (StringLen($v_Attributes) > 0) Then
  107.                     $v_Attributes = $v_Attributes + $CB_DDL_HIDDEN
  108.                 Else
  109.                     $v_Attributes = $CB_DDL_HIDDEN
  110.                 EndIf
  111.             Case StringUpper($a_Attributes[$i]) = "RO"
  112.                 If (StringLen($v_Attributes) > 0) Then
  113.                     $v_Attributes = $v_Attributes + $CB_DDL_READONLY
  114.                 Else
  115.                     $v_Attributes = $CB_DDL_READONLY
  116.                 EndIf
  117.             Case StringUpper($a_Attributes[$i]) = "RW"
  118.                 If (StringLen($v_Attributes) > 0) Then
  119.                     $v_Attributes = $v_Attributes + $CB_DDL_READWRITE
  120.                 Else
  121.                     $v_Attributes = $CB_DDL_READWRITE
  122.                 EndIf
  123.             Case StringUpper($a_Attributes[$i]) = "S"
  124.                 If (StringLen($v_Attributes) > 0) Then
  125.                     $v_Attributes = $v_Attributes + $CB_DDL_SYSTEM
  126.                 Else
  127.                     $v_Attributes = $CB_DDL_SYSTEM
  128.                 EndIf
  129.             Case StringUpper($a_Attributes[$i]) = "DRIVES"
  130.                 $i_drives = 1
  131.                 $s_file = ""
  132.                 If (StringLen($v_Attributes) > 0) Then
  133.                     $v_Attributes = $v_Attributes + $CB_DDL_DRIVES
  134.                 Else
  135.                     $v_Attributes = $CB_DDL_DRIVES
  136.                 EndIf
  137.             Case StringUpper($a_Attributes[$i]) = "E"
  138.                 If (StringLen($v_Attributes) > 0) Then
  139.                     $v_Attributes = $v_Attributes + $CB_DDL_EXCLUSIVE
  140.                 Else
  141.                     $v_Attributes = $CB_DDL_EXCLUSIVE
  142.                 EndIf
  143.             Case StringUpper($a_Attributes[$i]) = "NB"
  144.                 If (StringLen($v_Attributes) > 0) And StringInStr($s_Attributes,"DRIVES") Then
  145.                     $no_brackets = 1
  146.                 Else
  147.                     $no_brackets = 0
  148.                 EndIf
  149.             Case Else
  150.                 ; invalid attribute
  151.                 Return $CB_ERRATTRIBUTE
  152.         EndSelect
  153.     Next
  154.     If (Not $i_drives And StringLen($s_file) == 0) Then Return $CB_ERRREQUIRED
  155.     If $i_drives And $no_brackets Then
  156.         Local $s_text
  157.         Local $gui_no_brackets = GUICreate("no brackets")
  158.         Local $combo_no_brackets = GUICtrlCreateCombo("", 70, 10, 270, 100,$CBS_SIMPLE)
  159.         $v_ret = GUICtrlSendMsg($combo_no_brackets, $CB_DIR, $v_Attributes, $s_file)
  160.         For $i = 0 To _GUICtrlComboGetCount($combo_no_brackets) - 1
  161.             _GUICtrlComboGetLBText($combo_no_brackets,$i,$s_text)
  162.             $s_text = StringReplace(StringReplace(StringReplace($s_text,"[",""),"]",":"),"-","")
  163.             _GUICtrlComboInsertString($h_combobox,-1,$s_text)
  164.         Next
  165.         GUIDelete($gui_no_brackets)
  166.         Return $v_ret
  167.     Else
  168.     If IsHWnd($h_combobox) Then
  169.             $v_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_DIR, "int", $v_Attributes, "str", $s_file)
  170.             Return $v_ret[0]
  171.     Else
  172.         Return GUICtrlSendMsg($h_combobox, $CB_DIR, $v_Attributes, $s_file)
  173.         EndIf
  174.     EndIf
  175. EndFunc   ;==>_GUICtrlComboAddDir
  176.  
  177. ;===============================================================================
  178. ;
  179. ; Description:            _GUICtrlComboAddString
  180. ; Parameter(s):        $h_combobox - controlID
  181. ;                            $s_text - String to add
  182. ; Requirement:            None
  183. ; Return Value(s):    The return value is the zero-based index to the string in the list box of the combo box.
  184. ;                            If an error occurs, the return value is $CB_ERR.
  185. ;                            If insufficient space is available to store the new string, it is $CB_ERRSPACE.
  186. ; User CallTip:        _GUICtrlComboAddString($h_combobox, $s_text) Add a string to the list box of a combo box (required: <GuiCombo.au3>)
  187. ; Author(s):            Gary Frost (custompcs at charter dot net)
  188. ; Note(s):                If the combo box does not have the CBS_SORT style,
  189. ;                            the string is added to the end of the list.
  190. ;                            Otherwise, the string is inserted into the list, and the list is sorted.
  191. ;
  192. ;===============================================================================
  193. Func _GUICtrlComboAddString($h_combobox, $s_text)
  194.     If IsHWnd($h_combobox) Then
  195.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_ADDSTRING, "int", 0, "str", $s_text)
  196.         Return $a_ret[0]
  197.     Else
  198.         Return GUICtrlSendMsg($h_combobox, $CB_ADDSTRING, 0, $s_text)
  199.     EndIf
  200. EndFunc   ;==>_GUICtrlComboAddString
  201.  
  202. ;===============================================================================
  203. ;
  204. ; Description:            _GUICtrlComboAutoComplete
  205. ; Parameter(s):        $h_combobox - controlID
  206. ;                            $s_text - String for comparing against the combo's input box
  207. ; Requirement:            Misc
  208. ; Return Value(s):    None
  209. ; User CallTip:        _GUICtrlComboAutoComplete($h_combobox, ByRef $s_text) AutoComplete a combo box input(required: <GuiCombo.au3>)
  210. ; Author(s):            Gary Frost (custompcs at charter dot net)
  211. ; Note(s):
  212. ;
  213. ;===============================================================================
  214. Func _GUICtrlComboAutoComplete($h_combobox, ByRef $s_text, $s_WTitle = "", $s_WText = "")
  215.     Local $ret, $s_inputtext, $s_data
  216.     If _IsPressed ('08') Then ;backspace pressed
  217.         $s_text = GUICtrlRead($h_combobox)
  218.     Else
  219.         If IsHWnd($h_combobox) Then
  220.             If $s_text <> ControlGetText($s_WTitle, $s_WText, $h_combobox) Then
  221.                 $s_data = ControlGetText($s_WTitle, $s_WText, $h_combobox)
  222.                 $ret = _GUICtrlComboFindString($h_combobox, $s_data)
  223.                 If ($ret <> $CB_ERR) Then
  224.                     _GUICtrlComboGetLBText($h_combobox, $ret, $s_inputtext)
  225.                     ControlSetText($s_WTitle, $s_WText, $h_combobox, $s_inputtext)
  226.                     _GUICtrlComboSetEditSel($h_combobox, StringLen($s_data), StringLen(ControlGetText($s_WTitle, $s_WText, $h_combobox)))
  227.                 EndIf
  228.                 $s_text = ControlGetText(WinGetTitle(""), "", $h_combobox)
  229.             EndIf
  230.         Else
  231.             If $s_text <> GUICtrlRead($h_combobox) Then
  232.                 $s_data = GUICtrlRead($h_combobox)
  233.                 $ret = _GUICtrlComboFindString($h_combobox, $s_data)
  234.                 If ($ret <> $CB_ERR) Then
  235.                     _GUICtrlComboGetLBText($h_combobox, $ret, $s_inputtext)
  236.                     GUICtrlSetData($h_combobox, $s_inputtext)
  237.                     _GUICtrlComboSetEditSel($h_combobox, StringLen($s_data), StringLen(GUICtrlRead($h_combobox)))
  238.                 EndIf
  239.                 $s_text = GUICtrlRead($h_combobox)
  240.             EndIf
  241.         EndIf
  242.     EndIf
  243. EndFunc   ;==>_GUICtrlComboAutoComplete
  244.  
  245. ;===============================================================================
  246. ;
  247. ; Description:            _GUICtrlComboDeleteString
  248. ; Parameter(s):        $h_combobox - controlID
  249. ;                            $i_index - Specifies the zero-based index of the string
  250. ; Requirement:            None
  251. ; Return Value(s):    The return value is a count of the strings remaining in the list.
  252. ;                            If the $i_index parameter specifies an index greater than the number
  253. ;                            of items in the list, the return value is $CB_ERR.
  254. ; User CallTip:        _GUICtrlComboDeleteString($h_combobox, $i_index) Delete a string in the list box of a combo box (required: <GuiCombo.au3>)
  255. ; Author(s):            Gary Frost (custompcs at charter dot net)
  256. ; Note(s):                :
  257. ;
  258. ;===============================================================================
  259. Func _GUICtrlComboDeleteString($h_combobox, $i_index)
  260.     If IsHWnd($h_combobox) Then
  261.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_DELETESTRING, "int", $i_index, "int", 0)
  262.         Return $a_ret[0]
  263.     Else
  264.         Return GUICtrlSendMsg($h_combobox, $CB_DELETESTRING, $i_index, 0)
  265.     EndIf
  266. EndFunc   ;==>_GUICtrlComboDeleteString
  267.  
  268. ;===============================================================================
  269. ;
  270. ; Description:            _GUICtrlComboFindString
  271. ; Parameter(s):        $h_combobox - controlID
  272. ;                            $s_search - String to search for
  273. ;                            $i_exact - Optional: Exact match or not
  274. ; Requirement:            None
  275. ; Return Value(s):    The return value is the zero-based index of the matching item.
  276. ;                            If the search is unsuccessful, it is $CB_ERR.
  277. ; User CallTip:        _GUICtrlComboFindString($h_combobox, $s_search[, $i_exact=0]) Return the index of matching item (required: <GuiCombo.au3>)
  278. ; Author(s):            Gary Frost (custompcs at charter dot net)
  279. ; Note(s):                $i_exact = 0 Search the list box of a combo box for an item beginning with
  280. ;                                             the characters in a specified string
  281. ;                            $i_exact <> 0 Find the first list box string in a combo box that matches
  282. ;                                              the string specified in the $s_search parameter
  283. ;
  284. ;===============================================================================
  285. Func _GUICtrlComboFindString($h_combobox, $s_search, $i_exact = 0)
  286.     If IsHWnd($h_combobox) Then
  287.         Local $a_ret
  288.         If ($i_exact) Then
  289.             $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_FINDSTRINGEXACT, "int", -1, "str", $s_search)
  290.         Else
  291.             $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_FINDSTRING, "int", -1, "str", $s_search)
  292.         EndIf
  293.         Return $a_ret[0]
  294.     Else
  295.         If ($i_exact) Then
  296.             Return GUICtrlSendMsg($h_combobox, $CB_FINDSTRINGEXACT, -1, $s_search)
  297.         Else
  298.             Return GUICtrlSendMsg($h_combobox, $CB_FINDSTRING, -1, $s_search)
  299.         EndIf
  300.     EndIf
  301. EndFunc   ;==>_GUICtrlComboFindString
  302.  
  303. ;===============================================================================
  304. ;
  305. ; Description:            _GUICtrlComboGetCount
  306. ; Parameter(s):        $h_combobox - controlID
  307. ; Requirement:            None
  308. ; Return Value(s):    The return value is the number of items in the list box.
  309. ;                            If an error occurs, it is $CB_ERR
  310. ; User CallTip:        _GUICtrlComboGetCount($h_combobox) Retrieve the number of items in the list box of a combo box (required: <GuiCombo.au3>)
  311. ; Author(s):            Gary Frost (custompcs at charter dot net)
  312. ; Note(s):                The index is zero-based, so the returned count is one greater
  313. ;                            than the index value of the last item.
  314. ;
  315. ;===============================================================================
  316. Func _GUICtrlComboGetCount($h_combobox)
  317.     If IsHWnd($h_combobox) Then
  318.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_GETCOUNT, "int", 0, "int", 0)
  319.         Return $a_ret[0]
  320.     Else
  321.         Return GUICtrlSendMsg($h_combobox, $CB_GETCOUNT, 0, 0)
  322.     EndIf
  323. EndFunc   ;==>_GUICtrlComboGetCount
  324.  
  325. ;===============================================================================
  326. ;
  327. ; Description:            _GUICtrlComboGetCurSel
  328. ; Parameter(s):        $h_combobox - controlID
  329. ; Requirement:            None
  330. ; Return Value(s):    The return value is the zero-based index of the currently selected item.
  331. ;                            If no item is selected, it is $CB_ERR
  332. ; User CallTip:        _GUICtrlComboGetCurSel($h_combobox) Retrieve the index of the currently selected item, if any, in the list box of a combo box (required: <GuiCombo.au3>)
  333. ; Author(s):            Gary Frost (custompcs at charter dot net)
  334. ; Note(s):                :
  335. ;
  336. ;===============================================================================
  337. Func _GUICtrlComboGetCurSel($h_combobox)
  338.     If IsHWnd($h_combobox) Then
  339.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_GETCURSEL, "int", 0, "int", 0)
  340.         Return $a_ret[0]
  341.     Else
  342.         Return GUICtrlSendMsg($h_combobox, $CB_GETCURSEL, 0, 0)
  343.     EndIf
  344. EndFunc   ;==>_GUICtrlComboGetCurSel
  345.  
  346. ;===============================================================================
  347. ;
  348. ; Description:            _GUICtrlComboGetDroppedControlRect
  349. ; Parameter(s):        $h_combobox - controlID
  350. ; Requirement:            None
  351. ; Return Value(s):    Array containing the RECT, first element ($array[0]) contains the number of elements
  352. ;                            If an error occurs, the return value is $CB_ERR.
  353. ; User CallTip:        _GUICtrlComboGetDroppedControlRect($h_combobox) Retrieve the screen coordinates of a combo box in its dropped-down state. (required: <GuiCombo.au3>)
  354. ; Author(s):            Gary Frost (custompcs at charter dot net)
  355. ; Note(s):                $array[1] - left
  356. ;                            $array[2] - top
  357. ;                            $array[3] - right
  358. ;                            $array[4] - bottom
  359. ;
  360. ;===============================================================================
  361. Func _GUICtrlComboGetDroppedControlRect($h_combobox)
  362. ;~     typedef struct _RECT {
  363. ;~       LONG left;
  364. ;~       LONG top;
  365. ;~       LONG right;
  366. ;~       LONG bottom;
  367. ;~     } RECT, *PRECT;
  368.     Local $RECT = "int;int;int;int"
  369.     Local $left = 1
  370.     Local $top = 2
  371.     Local $right = 3
  372.     Local $bottom = 4
  373.     Local $p, $ret
  374.     $p = DllStructCreate($RECT)
  375.     If @error Then Return SetError($CB_ERR,$CB_ERR,$CB_ERR)
  376.     If IsHWnd($h_combobox) Then
  377.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_GETDROPPEDCONTROLRECT, "int", 0, "ptr", DllStructGetPtr($p))
  378.         If (Not $a_ret[0]) Then Return SetError($CB_ERR,$CB_ERR,$CB_ERR)
  379.     Else
  380.         $ret = GUICtrlSendMsg($h_combobox, $CB_GETDROPPEDCONTROLRECT, 0, DllStructGetPtr($p))
  381.         If (Not $ret) Then Return SetError($CB_ERR,$CB_ERR,$CB_ERR)
  382.     EndIf
  383.     Local $array = StringSplit(DllStructGetData($p, $left) & "," & DllStructGetData($p, $top) & "," & DllStructGetData($p, $right) & "," & DllStructGetData($p, $bottom), ",")
  384.     ;   DllStructDelete($p)
  385.     Return $array
  386. EndFunc   ;==>_GUICtrlComboGetDroppedControlRect
  387.  
  388. ;===============================================================================
  389. ;
  390. ; Description:            _GUICtrlComboGetDroppedState
  391. ; Parameter(s):        $h_combobox - controlID
  392. ; Requirement:            None
  393. ; Return Value(s):    If the list box is visible, the return value is TRUE
  394. ;                             otherwise, it is FALSE
  395. ; User CallTip:        _GUICtrlComboGetDroppedState($h_combobox) Determine whether the list box of a combo box is dropped down (required: <GuiCombo.au3>)
  396. ; Author(s):            Gary Frost (custompcs at charter dot net)
  397. ; Note(s):                :
  398. ;
  399. ;===============================================================================
  400. Func _GUICtrlComboGetDroppedState($h_combobox)
  401.     If IsHWnd($h_combobox) Then
  402.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_GETDROPPEDSTATE, "int", 0, "int", 0)
  403.         Return $a_ret[0]
  404.     Else
  405.         Return GUICtrlSendMsg($h_combobox, $CB_GETDROPPEDSTATE, 0, 0)
  406.     EndIf
  407. EndFunc   ;==>_GUICtrlComboGetDroppedState
  408.  
  409. ;===============================================================================
  410. ;
  411. ; Description:            _GUICtrlComboGetDroppedWidth
  412. ; Parameter(s):        $h_combobox - controlID
  413. ; Requirement:            CBS_DROPDOWN or CBS_DROPDOWNLIST style
  414. ; Return Value(s):    If the message succeeds, the return value is the width, in pixels.
  415. ;                            If the message fails, the return value is $CB_ERR
  416. ; User CallTip:        _GUICtrlComboGetDroppedWidth($h_combobox) Retrieve the minimum allowable width, of the list box of a combo box (required: <GuiCombo.au3>)
  417. ; Author(s):            Gary Frost (custompcs at charter dot net)
  418. ; Note(s):                :
  419. ;
  420. ;===============================================================================
  421. Func _GUICtrlComboGetDroppedWidth($h_combobox)
  422.     If IsHWnd($h_combobox) Then
  423.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_GETDROPPEDWIDTH, "int", 0, "int", 0)
  424.         Return $a_ret[0]
  425.     Else
  426.         Return GUICtrlSendMsg($h_combobox, $CB_GETDROPPEDWIDTH, 0, 0)
  427.     EndIf
  428. EndFunc   ;==>_GUICtrlComboGetDroppedWidth
  429.  
  430. ;===============================================================================
  431. ;
  432. ; Description:            _GUICtrlComboGetEditSel
  433. ; Parameter(s):        $h_combobox - controlID
  434. ; Requirement:            None
  435. ; Return Value(s):    Array containing the starting and ending selected positions, first element ($array[0]) contains the number of elements
  436. ;                            If an error occurs, the return value is $CB_ERR.
  437. ; User CallTip:        _GUICtrlComboGetEditSel($h_combobox) Get the starting and ending character positions of the current selection in the edit control of a combo box. (required: <GuiCombo.au3>)
  438. ; Author(s):            Gary Frost (custompcs at charter dot net)
  439. ; Note(s):                $array[1] - starting position
  440. ;                            $array[2] - ending position
  441. ;
  442. ;===============================================================================
  443. Func _GUICtrlComboGetEditSel($h_combobox)
  444.     Local $struct_start = "dword"
  445.     Local $struct_end = "dword"
  446.     Local $ss = DllStructCreate($struct_start)
  447.     If @error Then  Return SetError($CB_ERR,$CB_ERR,$CB_ERR)
  448.     Local $se = DllStructCreate($struct_end)
  449.     If @error Then Return SetError($CB_ERR,$CB_ERR,$CB_ERR)
  450.     If IsHWnd($h_combobox) Then
  451.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_GETEDITSEL, "ptr", DllStructGetPtr($ss), "ptr", DllStructGetPtr($se))
  452.         If (Not $a_ret[0]) Then Return SetError($CB_ERR,$CB_ERR,$CB_ERR)
  453.     Else
  454.         Local $ret = GUICtrlSendMsg($h_combobox, $CB_GETEDITSEL, DllStructGetPtr($ss), DllStructGetPtr($se))
  455.         If (Not $ret) Then Return SetError($CB_ERR,$CB_ERR,$CB_ERR)
  456.     EndIf
  457.     Local $s_start_end = DllStructGetData($ss, 1) & "," & DllStructGetData($se, 1)
  458.     Return StringSplit($s_start_end, ",")
  459. EndFunc   ;==>_GUICtrlComboGetEditSel
  460.  
  461. ;===============================================================================
  462. ;
  463. ; Description:            _GUICtrlComboGetExtendedUI
  464. ; Parameter(s):        $h_combobox - controlID
  465. ; Requirement:            None
  466. ; Return Value(s):    If the combo box has the extended user interface,
  467. ;                            the return value is TRUE; otherwise, it is FALSE
  468. ; User CallTip:        _GUICtrlComboGetExtendedUI($h_combobox) Determine whether a combo box has the default user interface or the extended user interface (required: <GuiCombo.au3>)
  469. ; Author(s):            Gary Frost (custompcs at charter dot net)
  470. ; Note(s):                By default, the F4 key opens or closes the list and the
  471. ;                            DOWN ARROW changes the current selection.
  472. ;                            In a combo box with the extended user interface, the F4
  473. ;                            key is disabled and pressing the DOWN ARROW key opens the
  474. ;                            drop-down list.
  475. ;
  476. ;===============================================================================
  477. Func _GUICtrlComboGetExtendedUI($h_combobox)
  478.     If IsHWnd($h_combobox) Then
  479.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_GETEXTENDEDUI, "int", 0, "int", 0)
  480.         Return $a_ret[0]
  481.     Else
  482.         Return GUICtrlSendMsg($h_combobox, $CB_GETEXTENDEDUI, 0, 0)
  483.     EndIf
  484. EndFunc   ;==>_GUICtrlComboGetExtendedUI
  485.  
  486. ;===============================================================================
  487. ;
  488. ; Description:            _GUICtrlComboGetHorizontalExtent
  489. ; Parameter(s):        $h_combobox - controlID
  490. ; Requirement:            None
  491. ; Return Value(s):    The return value is the scrollable width, in pixels.
  492. ; User CallTip:        _GUICtrlComboGetHorizontalExtent($h_combobox) Retrieve from a combo box the width, in pixels (required: <GuiCombo.au3>)
  493. ; Author(s):            Gary Frost (custompcs at charter dot net)
  494. ; Note(s):                Retrieve from a combo box the width, in pixels, by which the
  495. ;                            list box can be scrolled horizontally (the scrollable width).
  496. ;                            This is applicable only if the list box has a horizontal scroll bar.
  497. ;
  498. ;===============================================================================
  499. Func _GUICtrlComboGetHorizontalExtent($h_combobox)
  500.     If IsHWnd($h_combobox) Then
  501.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_GETHORIZONTALEXTENT, "int", 0, "int", 0)
  502.         Return $a_ret[0]
  503.     Else
  504.         Return GUICtrlSendMsg($h_combobox, $CB_GETHORIZONTALEXTENT, 0, 0)
  505.     EndIf
  506. EndFunc   ;==>_GUICtrlComboGetHorizontalExtent
  507.  
  508. ;===============================================================================
  509. ;
  510. ; Description:            _GUICtrlComboGetItemHeight
  511. ; Parameter(s):        $h_combobox - controlID
  512. ;                            $i_index - Specifies the zero-based index of the string
  513. ; Requirement:            None
  514. ; Return Value(s):    The return value is the height, in pixels, of the list items in a combo box.
  515. ;                            If the combo box has the CBS_OWNERDRAWVARIABLE style, it is the height of the
  516. ;                            item specified by the $i_index parameter. If $i_index is û1, the return value
  517. ;                            is the height of the edit control (or static-text) portion of the combo box.
  518. ;                            If an error occurs, the return value is $CB_ERR
  519. ; User CallTip:        _GUICtrlComboGetItemHeight($h_combobox[, $i_index=-1]) Determine the height of list items or the selection field in a combo box (required: <GuiCombo.au3>)
  520. ; Author(s):            Gary Frost (custompcs at charter dot net)
  521. ; Note(s):                :
  522. ;
  523. ;===============================================================================
  524. Func _GUICtrlComboGetItemHeight($h_combobox, $i_index = -1)
  525.     If IsHWnd($h_combobox) Then
  526.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_GETITEMHEIGHT, "int", $i_index, "int", 0)
  527.         Return $a_ret[0]
  528.     Else
  529.         Return GUICtrlSendMsg($h_combobox, $CB_GETITEMHEIGHT, $i_index, 0)
  530.     EndIf
  531. EndFunc   ;==>_GUICtrlComboGetItemHeight
  532.  
  533. ;===============================================================================
  534. ;
  535. ; Description:            _GUICtrlComboGetLBText
  536. ; Parameter(s):        $h_combobox - controlID
  537. ;                            $i_index - Specifies the zero-based index of the string to retrieve.
  538. ;                            $s_text - Buffer that receives the string
  539. ; Requirement:            None
  540. ; Return Value(s):    The return value is the length of the string, in TCHARs,
  541. ;                            excluding the terminating null character.
  542. ;                            If $i_index does not specify a valid index, the return value is $CB_ERR.
  543. ; User CallTip:        _GUICtrlComboGetLBText($h_combobox, $i_index, ByRef $s_text) Retrieve a string from the list of a combo box. (required: <GuiCombo.au3>)
  544. ; Author(s):            Gary Frost (custompcs at charter dot net)
  545. ; Note(s):                Must call _GUICtrlComboGetLBTextLen 1st and get the length
  546. ;
  547. ;===============================================================================
  548. Func _GUICtrlComboGetLBText($h_combobox, $i_index, ByRef $s_text)
  549.     Local $len = _GUICtrlComboGetLBTextLen($h_combobox, $i_index)
  550.     
  551.     $s_text = ""
  552.     Local $p, $ret
  553.     $p = DllStructCreate("char[" & $len + 1 & "]")
  554.     If IsHWnd($h_combobox) Then
  555.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_GETLBTEXT, "int", $i_index, "ptr", DllStructGetPtr($p))
  556.         If ($a_ret[0] == $CB_ERR) Then Return SetError($CB_ERR,$CB_ERR,$CB_ERR)
  557.     Else
  558.         $ret = GUICtrlSendMsg($h_combobox, $CB_GETLBTEXT, $i_index, DllStructGetPtr($p))
  559.         If ($ret == $CB_ERR) Then Return SetError($CB_ERR,$CB_ERR,$CB_ERR)
  560.     EndIf
  561.     $s_text = DllStructGetData($p, 1)
  562.     Return $ret
  563. EndFunc   ;==>_GUICtrlComboGetLBText
  564.  
  565. ;===============================================================================
  566. ;
  567. ; Description:            _GUICtrlComboGetLBTextLen
  568. ; Parameter(s):        $h_combobox - controlID
  569. ;                            $i_index - Specifies the zero-based index of the string
  570. ; Requirement:            None
  571. ; Return Value(s):    The return value is the length of the string, in TCHARs,
  572. ;                            excluding the terminating null character.
  573. ;                            If an ANSI string this is the number of bytes, and if it
  574. ;                            is a Unicode string this is the number of characters.
  575. ;                            If the $i_index parameter does not specify a valid index,
  576. ;                            the return value is $CB_ERR
  577. ; User CallTip:        _GUICtrlComboGetLBTextLen($h_combobox, $i_index) Retrieve the length, in characters, of a string in the list of a combo box (required: <GuiCombo.au3>)
  578. ; Author(s):            Gary Frost (custompcs at charter dot net)
  579. ; Note(s):                Under certain conditions, the return value is larger than the
  580. ;                            actual length of the text. This occurs with certain mixtures of
  581. ;                            ANSI and Unicode, and is due to the operating system allowing for
  582. ;                            the possible existence of double-byte character set (DBCS) characters
  583. ;                            within the text. The return value, however, will always be at least
  584. ;                            as large as the actual length of the text; so you can always use it
  585. ;                            to guide buffer allocation.
  586. ;                            This behavior can occur when an application uses both ANSI functions
  587. ;                            and common dialogs, which use Unicode.
  588. ;                            To obtain the exact length of the text, use the WM_GETTEXT, LB_GETTEXT,
  589. ;                            or CB_GETLBTEXT messages, or the GetWindowText function
  590. ;
  591. ;===============================================================================
  592. Func _GUICtrlComboGetLBTextLen($h_combobox, $i_index)
  593.     If IsHWnd($h_combobox) Then
  594.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_GETLBTEXTLEN, "int", $i_index, "int", 0)
  595.         Return $a_ret[0]
  596.     Else
  597.         Return GUICtrlSendMsg($h_combobox, $CB_GETLBTEXTLEN, $i_index, 0)
  598.     EndIf
  599. EndFunc   ;==>_GUICtrlComboGetLBTextLen
  600.  
  601. ;===============================================================================
  602. ;
  603. ; Function Name:    _GUICtrlComboGetList()
  604. ; Description:      Retrieves all items from the list portion of a ComboBox control.
  605. ; Parameter(s):     $a_Array      - Array
  606. ;                   $idCombo - Control ID of the combo.
  607. ;                   $sDelimiter - Delimeter used to seperate each item (Defaults to |).
  608. ; Requirement(s):   _GUICtrlComboGetCount(), _GUICtrlComboGetLBText()
  609. ; Return Value(s):  Delimited string of all ComboBox items.
  610. ; Author(s):        Jason Boggs
  611. ;
  612. ;===============================================================================
  613. Func _GUICtrlComboGetList($idCombo, $sDelimiter = "|")
  614.     Local $sResult, $sItem
  615.     For $i = 0 To _GUICtrlComboGetCount($idCombo) - 1
  616.         _GUICtrlComboGetLBText($idCombo, $i, $sItem)
  617.         $sResult &= $sItem & $sDelimiter
  618.     Next
  619.     $sResult = StringTrimRight($sResult, StringLen($sDelimiter))
  620.     Return $sResult
  621. EndFunc   ;==>_GUICtrlComboGetList
  622.  
  623. ;===============================================================================
  624. ;
  625. ; Description:            _GUICtrlComboGetLocale
  626. ; Parameter(s):        $h_combobox - controlID
  627. ; Requirement:            None
  628. ; Return Value(s):    Returns the current Local of the combobox
  629. ;                             same as @OSLang unless changed
  630. ; User CallTip:        _GUICtrlComboGetLocale($h_combobox) Retrieve the current locale of the combo box (required: <GuiCombo.au3>)
  631. ; Author(s):            Gary Frost (custompcs at charter dot net)
  632. ; Note(s):                "0409" for U.S. English
  633. ;                            see @OSLang for string values
  634. ;
  635. ;===============================================================================
  636. Func _GUICtrlComboGetLocale($h_combobox)
  637.     If IsHWnd($h_combobox) Then
  638.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_GETLOCALE, "int", 0, "int", 0)
  639.         Return Hex($a_ret[0], 4)
  640.     Else
  641.         Return Hex( GUICtrlSendMsg($h_combobox, $CB_GETLOCALE, 0, 0), 4)
  642.     EndIf
  643. EndFunc   ;==>_GUICtrlComboGetLocale
  644.  
  645. ;===============================================================================
  646. ;
  647. ; Description:            _GUICtrlComboGetMinVisible
  648. ; Parameter(s):        $h_combobox - controlID
  649. ; Requirement:            None
  650. ; Return Value(s):    The return value is the minimum number of visible items
  651. ; User CallTip:        _GUICtrlComboGetMinVisible($h_combobox) Get the minimum number of visible items in the drop-down list of a combo box (required: <GuiCombo.au3>)
  652. ; Author(s):            Gary Frost (custompcs at charter dot net)
  653. ; Note(s):                When the number of items in the drop-down list is greater
  654. ;                            than the minimum, the combo box uses a scrollbar.
  655. ;                            This message is ignored if the combo box control has style
  656. ;                            CBS_NOINTEGRALHEIGHT.
  657. ;                            To use CB_GETMINVISIBLE, the application must specify comctl32.dll
  658. ;                            version 6 in the manifest. For more information, see
  659. ;                            Using Windows XP Visual Styles
  660. ;
  661. ;===============================================================================
  662. Func _GUICtrlComboGetMinVisible($h_combobox)
  663.     If IsHWnd($h_combobox) Then
  664.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_GETMINVISIBLE, "int", 0, "int", 0)
  665.         Return $a_ret[0]
  666.     Else
  667.         Return GUICtrlSendMsg($h_combobox, $CB_GETMINVISIBLE, 0, 0)
  668.     EndIf
  669. EndFunc   ;==>_GUICtrlComboGetMinVisible
  670.  
  671. ;===============================================================================
  672. ;
  673. ; Description:            _GUICtrlComboGetTopIndex
  674. ; Parameter(s):        $h_combobox - controlID
  675. ; Requirement:            None
  676. ; Return Value(s):    If the message is successful, the return value is the index of the first
  677. ;                            visible item in the list box of the combo box.
  678. ;                            If the message fails, the return value is $CB_ERR
  679. ; User CallTip:        _GUICtrlComboGetTopIndex($h_combobox) Retrieve the zero-based index of the first visible item in the list box portion of a combo box (required: <GuiCombo.au3>)
  680. ; Author(s):            Gary Frost (custompcs at charter dot net)
  681. ; Note(s):                Initially, the item with index 0 is at the top of the list box,
  682. ;                            but if the list box contents have been scrolled, another item may be at the top
  683. ;
  684. ;===============================================================================
  685. Func _GUICtrlComboGetTopIndex($h_combobox)
  686.     If IsHWnd($h_combobox) Then
  687.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_GETTOPINDEX, "int", 0, "int", 0)
  688.         Return $a_ret[0]
  689.     Else
  690.         Return GUICtrlSendMsg($h_combobox, $CB_GETTOPINDEX, 0, 0)
  691.     EndIf
  692. EndFunc   ;==>_GUICtrlComboGetTopIndex
  693.  
  694. ;===============================================================================
  695. ;
  696. ; Description:            _GUICtrlComboInitStorage
  697. ; Parameter(s):        $h_combobox - controlID
  698. ;                            $i_num - Specifies the number of items to add
  699. ;                            $i_bytes - Specifies the amount of memory to allocate for item strings, in bytes
  700. ; Requirement:            None
  701. ; Return Value(s):    If the message is successful, the return value is the total number
  702. ;                            of items for which memory has been pre-allocated, that is, the total
  703. ;                            number of items added by all successful CB_INITSTORAGE messages.
  704. ;                            If the message fails, the return value is $CB_ERRSPACE
  705. ; User CallTip:        _GUICtrlComboInitStorage($h_combobox, $i_num, $i_bytes) Allocates memory for storing list box items (required: <GuiCombo.au3>)
  706. ; Author(s):            Gary Frost (custompcs at charter dot net)
  707. ; Note(s):                Windows NT 4.0: This message does not allocate the specified amount of memory
  708. ;                             however, it always returns the value specified in the $i_num parameter.
  709. ;                            Windows 2000/XP: The message allocates memory and returns the success and error values described above
  710. ;
  711. ;                            The CB_INITSTORAGE message helps speed up the initialization of combo boxes
  712. ;                            that have a large number of items (over 100).
  713. ;                            It reserves the specified amount of memory so that subsequent CB_ADDSTRING,
  714. ;                            CB_INSERTSTRING, and CB_DIR messages take the shortest possible time.
  715. ;                            You can use estimates for the $i_num and $i_bytes parameters.
  716. ;                            If you overestimate, the extra memory is allocated,
  717. ;                            if you underestimate, the normal allocation is used for items that exceed the requested amount
  718. ;
  719. ;===============================================================================
  720. Func _GUICtrlComboInitStorage($h_combobox, $i_num, $i_bytes)
  721.     If IsHWnd($h_combobox) Then
  722.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_INITSTORAGE, "int", $i_num, "int", $i_bytes)
  723.         Return $a_ret[0]
  724.     Else
  725.         Return GUICtrlSendMsg($h_combobox, $CB_INITSTORAGE, $i_num, $i_bytes)
  726.     EndIf
  727. EndFunc   ;==>_GUICtrlComboInitStorage
  728.  
  729. ;===============================================================================
  730. ;
  731. ; Description:            _GUICtrlComboInsertString
  732. ; Parameter(s):        $h_combobox - controlID
  733. ;                            $i_index - Specifies the zero-based index of the position at which to insert the string
  734. ;                            $s_text - String to insert
  735. ; Requirement:            None
  736. ; Return Value(s):    The return value is the index of the position at which the string was inserted.
  737. ;                            If an error occurs, the return value is $CB_ERR.
  738. ;                            If there is insufficient space available to store the new string, it is $CB_ERRSPACE
  739. ; User CallTip:        _GUICtrlComboInsertString($h_combobox, $i_index , $s_text) Insert a string into the list box of a combo box (required: <GuiCombo.au3>)
  740. ; Author(s):            Gary Frost (custompcs at charter dot net)
  741. ; Note(s):                If the $i_index parameter is û1, the string is added to the end of the list
  742. ;                            If the combo box has WS_HSCROLL style and you insert a string wider than the
  743. ;                            combo box, you should send a LB_SETHORIZONTALEXTENT message to ensure the
  744. ;                            horizontal scrollbar appears
  745. ;
  746. ;===============================================================================
  747. Func _GUICtrlComboInsertString($h_combobox, $i_index, $s_text)
  748.     If IsHWnd($h_combobox) Then
  749.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_INSERTSTRING, "int", $i_index, "str", $s_text)
  750.         Return $a_ret[0]
  751.     Else
  752.         Return GUICtrlSendMsg($h_combobox, $CB_INSERTSTRING, $i_index, $s_text)
  753.     EndIf
  754. EndFunc   ;==>_GUICtrlComboInsertString
  755.  
  756. ;===============================================================================
  757. ;
  758. ; Description:            _GUICtrlComboLimitText
  759. ; Parameter(s):        $h_combobox - controlID
  760. ;                            $i_limit - Optional: Specifies the maximum number of characters the user can enter
  761. ; Requirement:            None
  762. ; Return Value(s):    None
  763. ; User CallTip:        _GUICtrlComboLimitText($h_combobox[, $i_limit=0]) Limit the length of the text the user may type into the edit control of a combo box (required: <GuiCombo.au3>)
  764. ; Author(s):            Gary Frost (custompcs at charter dot net)
  765. ; Note(s):                If the $i_limit parameter is zero, the text length is limited to 0x7FFFFFFE characters
  766. ;                            If the combo box does not have the CBS_AUTOHSCROLL style, setting the text limit to
  767. ;                            be larger than the size of the edit control has no effect.
  768. ;                            The CB_LIMITTEXT message limits only the text the user can enter.
  769. ;                            It has no effect on any text already in the edit control when the message is sent,
  770. ;                            nor does it affect the length of the text copied to the edit control when a string
  771. ;                            in the list box is selected.
  772. ;                            The default limit to the text a user can enter in the edit control is 30,000 characters
  773. ;
  774. ;===============================================================================
  775. Func _GUICtrlComboLimitText($h_combobox, $i_limit = 0)
  776.     If IsHWnd($h_combobox) Then
  777.         DllCall("user32.dll", "none", "SendMessage", "hwnd", $h_combobox, "int", $CB_LIMITTEXT, "int", $i_limit, "int", 0)
  778.     Else
  779.         GUICtrlSendMsg($h_combobox, $CB_LIMITTEXT, $i_limit, 0)
  780.     EndIf
  781. EndFunc   ;==>_GUICtrlComboLimitText
  782.  
  783. ;===============================================================================
  784. ;
  785. ; Description:            _GUICtrlComboResetContent
  786. ; Parameter(s):        $h_combobox - controlID
  787. ; Requirement:            None
  788. ; Return Value(s):    None
  789. ; User CallTip:        _GUICtrlComboResetContent($h_combobox) Remove all items from the list box and edit control of a combo box (required: <GuiCombo.au3>)
  790. ; Author(s):            Gary Frost (custompcs at charter dot net)
  791. ; Note(s):                :
  792. ;
  793. ;===============================================================================
  794. Func _GUICtrlComboResetContent($h_combobox)
  795.     If IsHWnd($h_combobox) Then
  796.         DllCall("user32.dll", "none", "SendMessage", "hwnd", $h_combobox, "int", $CB_RESETCONTENT, "int", 0, "int", 0)
  797.     Else
  798.         GUICtrlSendMsg($h_combobox, $CB_RESETCONTENT, 0, 0)
  799.     EndIf
  800. EndFunc   ;==>_GUICtrlComboResetContent
  801.  
  802. ;===============================================================================
  803. ;
  804. ; Description:            _GUICtrlComboSelectString
  805. ; Parameter(s):        $h_combobox - controlID
  806. ;                            $i_index - Specifies the zero-based index of the item preceding the first item to be searched
  807. ;                            $s_search - String that contains the characters for which to search
  808. ; Requirement:            None
  809. ; Return Value(s):    If the string is found, the return value is the index of the selected item.
  810. ;                            If the search is unsuccessful, the return value is $CB_ERR and the current selection is not changed
  811. ; User CallTip:        _GUICtrlComboSelectString($h_combobox, $i_index, $s_search) Search the list of a combo box for an item that begins with the characters in a specified string (required: <GuiCombo.au3>)
  812. ; Author(s):            Gary Frost (custompcs at charter dot net)
  813. ; Note(s):                When the search reaches the bottom of the list, it continues from the top
  814. ;                            of the list back to the item specified by the wParam parameter.
  815. ;                            If $i_index is û1, the entire list is searched from the beginning
  816. ;                            A string is selected only if the characters from the starting point
  817. ;                            match the characters in the prefix string
  818. ;
  819. ;===============================================================================
  820. Func _GUICtrlComboSelectString($h_combobox, $i_index, $s_search)
  821.     If IsHWnd($h_combobox) Then
  822.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_SELECTSTRING, "int", $i_index, "str", $s_search)
  823.         Return $a_ret[0]
  824.     Else
  825.         Return GUICtrlSendMsg($h_combobox, $CB_SELECTSTRING, $i_index, $s_search)
  826.     EndIf
  827. EndFunc   ;==>_GUICtrlComboSelectString
  828.  
  829. ;===============================================================================
  830. ;
  831. ; Description:            _GUICtrlComboSetCurSel
  832. ; Parameter(s):        $h_combobox - controlID
  833. ;                            $i_index - Specifies the zero-based index of the string to select
  834. ; Requirement:            None
  835. ; Return Value(s):    If the message is successful, the return value is the index of the item selected.
  836. ;                            If $i_index is greater than the number of items in the list or if $i_index is û1,
  837. ;                            the return value is $CB_ERR and the selection is cleared
  838. ; User CallTip:        _GUICtrlComboSetCurSel($h_combobox, $i_index) Select a string in the list of a combo box (required: <GuiCombo.au3>)
  839. ; Author(s):            Gary Frost (custompcs at charter dot net)
  840. ; Note(s):                If this $i_index is û1, any current selection in the list is removed and the edit control is cleared
  841. ;
  842. ;===============================================================================
  843. Func _GUICtrlComboSetCurSel($h_combobox, $i_index)
  844.     If IsHWnd($h_combobox) Then
  845.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_SETCURSEL, "int", $i_index, "int", 0)
  846.         Return $a_ret[0]
  847.     Else
  848.         Return GUICtrlSendMsg($h_combobox, $CB_SETCURSEL, $i_index, 0)
  849.     EndIf
  850. EndFunc   ;==>_GUICtrlComboSetCurSel
  851.  
  852. ;===============================================================================
  853. ;
  854. ; Description:            _GUICtrlComboSetDroppedWidth
  855. ; Parameter(s):        $h_combobox - controlID
  856. ;                            $i_width - Specifies the width of the list box, in pixels
  857. ; Requirement:            CBS_DROPDOWN or CBS_DROPDOWNLIST style
  858. ; Return Value(s):    If the message is successful, The return value is the new width of the list box.
  859. ;                            If the message fails, the return value is $CB_ERR
  860. ; User CallTip:        _GUICtrlComboSetDroppedWidth($h_combobox, $i_width) Set the maximum allowable width (required: <GuiCombo.au3>)
  861. ; Author(s):            Gary Frost (custompcs at charter dot net)
  862. ; Note(s):                By default, the minimum allowable width of the drop-down list box is zero.
  863. ;                            The width of the list box is either the minimum allowable width or the
  864. ;                            combo box width, whichever is larger
  865. ;
  866. ;===============================================================================
  867. Func _GUICtrlComboSetDroppedWidth($h_combobox, $i_width)
  868.     If IsHWnd($h_combobox) Then
  869.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_SETDROPPEDWIDTH, "int", $i_width, "int", 0)
  870.         Return $a_ret[0]
  871.     Else
  872.         Return GUICtrlSendMsg($h_combobox, $CB_SETDROPPEDWIDTH, $i_width, 0)
  873.     EndIf
  874. EndFunc   ;==>_GUICtrlComboSetDroppedWidth
  875.  
  876. ;===============================================================================
  877. ;
  878. ; Description:            _GUICtrlComboSetEditSel
  879. ; Parameter(s):        $h_combobox - controlID
  880. ;                            $i_start - Starting position
  881. ;                            $i_stop - Ending position
  882. ; Requirement:            None
  883. ; Return Value(s):    If the message succeeds, the return value is TRUE.
  884. ;                            If the message is sent to a combo box with the CBS_DROPDOWNLIST style, it is $CB_ERR
  885. ; User CallTip:        _GUICtrlComboSetEditSel($h_combobox, $i_start, $i_stop) Select characters in the edit control of a combo box (required: <GuiCombo.au3>)
  886. ; Author(s):            Gary Frost (custompcs at charter dot net)
  887. ; Note(s):                The positions are zero-based.
  888. ;                            The first character of the edit control is in the zero position.
  889. ;                            The first character after the last selected character is in the ending position.
  890. ;                            For example, to select the first four characters of the edit control,
  891. ;                            use a starting position of 0 and an ending position of 4
  892. ;
  893. ;===============================================================================
  894. Func _GUICtrlComboSetEditSel($h_combobox, $i_start, $i_stop)
  895.     If IsHWnd($h_combobox) Then
  896.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_SETEDITSEL, "int", 0, "int", $i_stop * 65536 + $i_start)
  897.         Return $a_ret[0]
  898.     Else
  899.         Return GUICtrlSendMsg($h_combobox, $CB_SETEDITSEL, 0, $i_stop * 65536 + $i_start)
  900.     EndIf
  901. EndFunc   ;==>_GUICtrlComboSetEditSel
  902.  
  903. ;===============================================================================
  904. ;
  905. ; Description:            _GUICtrlComboSetExtendedUI
  906. ; Parameter(s):        $h_combobox - controlID
  907. ;                            $i_bool - Specifies whether the combo box uses the extended user interface or the default user interface
  908. ; Requirement:            None
  909. ; Return Value(s):    If the operation succeeds, the return value is CB_OKAY.
  910. ;                            If an error occurs, it is $CB_ERR
  911. ; User CallTip:        _GUICtrlComboSetExtendedUI($h_combobox, $i_bool) Select either the default user interface or the extended user interface (required: <GuiCombo.au3>)
  912. ; Author(s):            Gary Frost (custompcs at charter dot net)
  913. ; Note(s):                By default, the F4 key opens or closes the list and the
  914. ;                            DOWN ARROW changes the current selection. In the extended
  915. ;                            user interface, the F4 key is disabled and the DOWN ARROW
  916. ;                            key opens the drop-down list
  917. ;                            $i_bool specifies whether the combo box uses the extended
  918. ;                            user interface or the default user interface.
  919. ;                            A value of TRUE selects the extended user interface
  920. ;                             A value of FALSE selects the standard user interface
  921. ;
  922. ;===============================================================================
  923. Func _GUICtrlComboSetExtendedUI($h_combobox, $i_bool)
  924.     If IsHWnd($h_combobox) Then
  925.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_SETEXTENDEDUI, "int", $i_bool, "int", 0)
  926.         Return $a_ret[0]
  927.     Else
  928.         Return GUICtrlSendMsg($h_combobox, $CB_SETEXTENDEDUI, $i_bool, 0)
  929.     EndIf
  930. EndFunc   ;==>_GUICtrlComboSetExtendedUI
  931.  
  932. ;===============================================================================
  933. ;
  934. ; Description:            _GUICtrlComboSetHorizontalExtent
  935. ; Parameter(s):        $h_combobox - controlID
  936. ;                            $i_width - Specifies the scrollable width of the list box, in pixels
  937. ; Requirement:            None
  938. ; Return Value(s):    None
  939. ; User CallTip:        _GUICtrlComboSetHorizontalExtent($h_combobox, $i_width) Set the width, in pixels (required: <GuiCombo.au3>)
  940. ; Author(s):            Gary Frost (custompcs at charter dot net)
  941. ; Note(s):                An application sends the CB_SETHORIZONTALEXTENT message to set the width,
  942. ;                            in pixels, by which a list box can be scrolled horizontally (the scrollable width).
  943. ;                            If the width of the list box is smaller than this value, the horizontal scroll bar
  944. ;                            horizontally scrolls items in the list box.
  945. ;                            If the width of the list box is equal to or greater than this value, the horizontal
  946. ;                            scroll bar is hidden or, if the combo box has the CBS_DISABLENOSCROLL style, disabled
  947. ;
  948. ;===============================================================================
  949. Func _GUICtrlComboSetHorizontalExtent($h_combobox, $i_width)
  950.     If IsHWnd($h_combobox) Then
  951.         DllCall("user32.dll", "none", "SendMessage", "hwnd", $h_combobox, "int", $CB_SETHORIZONTALEXTENT, "int", $i_width, "int", 0)
  952.     Else
  953.         GUICtrlSendMsg($h_combobox, $CB_SETHORIZONTALEXTENT, $i_width, 0)
  954.     EndIf
  955. EndFunc   ;==>_GUICtrlComboSetHorizontalExtent
  956.  
  957. ;===============================================================================
  958. ;
  959. ; Description:            _GUICtrlComboSetItemHeight
  960. ; Parameter(s):        $h_combobox - controlID
  961. ;                            $i_component - Specifies the component of the combo box for which to set the height
  962. ;                            $i_height - Specifies the height, in pixels, of the combo box component identified by $i_component
  963. ; Requirement:            None
  964. ; Return Value(s):    If the index or height is invalid, the return value is $CB_ERR
  965. ; User CallTip:        _GUICtrlComboSetItemHeight($h_combobox, $i_component, $i_height) Set the height of list items or the selection field in a combo box (required: <GuiCombo.au3>)
  966. ; Author(s):            Gary Frost (custompcs at charter dot net)
  967. ; Note(s):                $i_component parameter must be û1 to set the height of the selection field.
  968. ;                            It must be zero to set the height of list items, unless the combo box has
  969. ;                            the CBS_OWNERDRAWVARIABLE style. In that case, the $i_component parameter
  970. ;                            is the zero-based index of a specific list item
  971. ;
  972. ;===============================================================================
  973. Func _GUICtrlComboSetItemHeight($h_combobox, $i_component, $i_height)
  974.     If IsHWnd($h_combobox) Then
  975.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_SETITEMHEIGHT, "int", $i_component, "int", $i_height)
  976.         Return $a_ret[0]
  977.     Else
  978.         Return GUICtrlSendMsg($h_combobox, $CB_SETITEMHEIGHT, $i_component, $i_height)
  979.     EndIf
  980. EndFunc   ;==>_GUICtrlComboSetItemHeight
  981.  
  982. ;===============================================================================
  983. ;
  984. ; Description:            _GUICtrlComboSetMinVisible
  985. ; Parameter(s):        $h_combobox - controlID
  986. ;                            $i_minimum - Specifies the minimum number of visible items
  987. ; Requirement:            None
  988. ; Return Value(s):    If the message is successful, the return value is TRUE.
  989. ;                            Otherwise the return value is FALSE
  990. ; User CallTip:        _GUICtrlComboSetMinVisible($h_combobox, $i_minimum) Set the minimum number of visible items in the drop-down list of a combo box (required: <GuiCombo.au3>)
  991. ; Author(s):            Gary Frost (custompcs at charter dot net)
  992. ; Note(s):                When the number of items in the drop-down list is greater than the minimum,
  993. ;                            the combo box uses a scrollbar.
  994. ;                            By default, 30 is the minimum number of visible items.
  995. ;                            This message is ignored if the combo box control has style CBS_NOINTEGRALHEIGHT.
  996. ;                            To use CB_SETMINVISIBLE, the application must specify comctl32.dll version 6 in the manifest
  997. ;
  998. ;===============================================================================
  999. Func _GUICtrlComboSetMinVisible($h_combobox, $i_minimum)
  1000.     If IsHWnd($h_combobox) Then
  1001.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_SETMINVISIBLE, "int", $i_minimum, "int", 0)
  1002.         Return $a_ret[0]
  1003.     Else
  1004.         Return GUICtrlSendMsg($h_combobox, $CB_SETMINVISIBLE, $i_minimum, 0)
  1005.     EndIf
  1006. EndFunc   ;==>_GUICtrlComboSetMinVisible
  1007.  
  1008. ;===============================================================================
  1009. ;
  1010. ; Description:            _GUICtrlComboSetTopIndex
  1011. ; Parameter(s):        $h_combobox - controlID
  1012. ;                            $i_index - Specifies the zero-based index of the list item
  1013. ; Requirement:            None
  1014. ; Return Value(s):    If the message is successful, the return value is zero.
  1015. ;                            If the message fails, the return value is $CB_ERR
  1016. ; User CallTip:        _GUICtrlComboSetTopIndex($h_combobox, $i_index) Ensure that a particular item is visible (required: <GuiCombo.au3>)
  1017. ; Author(s):            Gary Frost (custompcs at charter dot net)
  1018. ; Note(s):                The system scrolls the list box contents so that either the specified
  1019. ;                            item appears at the top of the list box or the maximum scroll range
  1020. ;                            has been reached
  1021. ;
  1022. ;===============================================================================
  1023. Func _GUICtrlComboSetTopIndex($h_combobox, $i_index)
  1024.     If IsHWnd($h_combobox) Then
  1025.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_combobox, "int", $CB_SETTOPINDEX, "int", $i_index, "int", 0)
  1026.         Return $a_ret[0]
  1027.     Else
  1028.         Return GUICtrlSendMsg($h_combobox, $CB_SETTOPINDEX, $i_index, 0)
  1029.     EndIf
  1030. EndFunc   ;==>_GUICtrlComboSetTopIndex
  1031.  
  1032. ;===============================================================================
  1033. ;
  1034. ; Description:            _GUICtrlComboShowDropDown
  1035. ; Parameter(s):        $h_combobox - controlID
  1036. ;                            $i_bool - Specifies whether the drop-down list box is to be shown or hidden
  1037. ; Requirement:            CBS_DROPDOWN or CBS_DROPDOWNLIST style
  1038. ; Return Value(s):    None
  1039. ; User CallTip:        _GUICtrlComboShowDropDown($h_combobox, $i_bool) Show or hide the list box of a combo box (required: <GuiCombo.au3>)
  1040. ; Author(s):            Gary Frost (custompcs at charter dot net)
  1041. ; Note(s):                $i_bool = TRUE shows the list box
  1042. ;                             $i_bool = FALSE hides it
  1043. ;                            This message has no effect on a combo box created with the CBS_SIMPLE style
  1044. ;
  1045. ;===============================================================================
  1046. Func _GUICtrlComboShowDropDown($h_combobox, $i_bool)
  1047.     If IsHWnd($h_combobox) Then
  1048.         DllCall("user32.dll", "none", "SendMessage", "hwnd", $h_combobox, "int", $CB_SHOWDROPDOWN, "int", $i_bool, "int", 0)
  1049.     Else
  1050.         GUICtrlSendMsg($h_combobox, $CB_SHOWDROPDOWN, $i_bool, 0)
  1051.     EndIf
  1052. EndFunc   ;==>_GUICtrlComboShowDropDown
  1053.